% -------------------------------------------------------------------------
% constants.m
% -------------------------------------------------------------------------

global LAYERS;
global POPULATION;
global INPUTS;
global W0;
global BETA;
global MUTATION_PROB;
global CUT_CRITERIA;
global MAX_GENERATIONS;
global SELECTION_METHOD;
global CROSS_METHOD;
global MUTATION_METHOD;
global REPLACEMENT_METHOD;
global CROSS_PROB;
global N_OF_PROGENITORS;
global FITNESS_DESIRED;
global N_OF_SELECTION_ELITE;
global BACKPROPAGATION_PROB;
global BACKPROPAGATION_STEPS;
global TEMP;


% ------------------------------
% Parametros de la red neuronal:
% ------------------------------

% Arquitectura de la red
LAYERS = [12 7 1];
 
% Cantidad de entradas de la red
INPUTS = 2;

% Rango de valores entre los que se inicializan los pesos de la red
W0 = [-0.5 0.5];
 
% Valor de BETA
BETA = 0.7;


% ----------------------------------
% Parametros del algoritmo genetico:
% ----------------------------------

% Tamano de la poblacion
POPULATION = 30;
 
% Brecha generacional
G = 0.7;

N_OF_PROGENITORS = floor(G * POPULATION);

% Temperatura inicial para Boltzman:
TEMP = 1000;

% Cantidad de individuos que se seleccionan por Elite en metodos mixtos:
N_OF_SELECTION_ELITE = 3;

% Probabilidad de Mutacion:
MUTATION_PROB = 0.001;
 
% Probabilidad de Cruce:
CROSS_PROB = 0.95;

% Probabilidad de Back Propagation
BACKPROPAGATION_PROB = 0.05;

% Pasos de backpropagation:
BACKPROPAGATION_STEPS = 100;


% Criterio de corte:
% -----------------
% Cantidad maxima de generaciones = 1
% Estructura = 2
% Contenido = 3
% Entorno al optimo = 4

CUT_CRITERIA = 1;

% Cantidad maxima de generaciones.
MAX_GENERATIONS = 2000;

% Cota de Fitness para el criterio de corte de Entorno al optimo.
FITNESS_DESIRED = -0.05;


% Metodo de seleccion:
% --------------------
% Elite = 1
% Ruleta = 2;
% Universal = 3
% Boltzman = 4
% Elite+Ruleta = 5
% Elite+Boltzman = 6

SELECTION_METHOD = 4;


% Metodo de cruce:
% ----------------
% Clasico = 1
% Multiple = 2
% Uniforme = 3
% Anular = 4

CROSS_METHOD = 1;


% Metodo de mutacion:
% -------------------
% Clasica = 1
% No uniforme = 2

MUTATION_METHOD = 1;


% Metodo de reemplazo:
% --------------------
% Elite = 1
% Ruleta = 2;
% Universal = 3
% Boltzman = 4
% Elite+Ruleta = 5
% Elite+Boltzman = 6

REPLACEMENT_METHOD = 6;
